-- bit = require('bit32')

-- out1_delay = {0,100,200,300,400,500,600,700}
-- out0_delay = {9000,8100,7200,6300,5400,4500,3600,2700}

-- 当输入信号发生变化时系统会调用此函数
--		index 为发生变化的GPIO序号
--		level 为这个GPIO目前的高低电平状态
function oninput(index,level)
   if (level > 0) then
		-- 上升沿动作
		-- do_udp_cmd(0x20,0x00,do_lshift(1,index),do_lshift(1,index), out1_delay[index+1])
		-- local msg=string.format("do_udp_cmd(0x20,0x00,%d,%d,%d)",index,level, out1_delay[index+1])
		-- do_log(msg);

		-- do_udp_cmd(0x20,0x00,do_lshift(0,index),do_lshift(1,index), out0_delay[index+1])
		-- local msg=string.format("do_udp_cmd(0x20,0x00,%d,%d,%d)",index,level, out0_delay[index+1])
		-- do_log(msg);
	else
		-- 下降沿动作
	end
	do_report_iostatus();		-- 上报GPIO的状态
	return 0
end

-- 当串口上接收到的数据，比如地熵数据
function on_recv_from_uart(buf,len)
	-- 串口上有收到数据
	return 0
end

-- 棉帘电机动作函数：
-- 		棉帘电机供电使用KC031 GPIO-1
--		棉帘电机正反转使用KC031 GPIO-8
-- 可以通过udp命令调用此函数，如：
--		FB1344010A636F727461696E5F726F746174696F6E0000FE
function cortain_rotation(p1,p2)
	-- 首选停止电机工作
	do_udp_cmd(0x20,0,do_lshift(0,1),do_lshift(1,1),0);
	if (p1 == 1) then
		-- 设置电机正转 
		do_udp_cmd(0x20,0,do_lshift(0,8),do_lshift(1,8),0);
		-- 电机开始工作，p2秒后延时停止，p2为0,没有延时，谨慎使用p2==0
		do_udp_cmd(0x20,0,do_lshift(1,1),do_lshift(1,1),p2*1000);
	else 
		if (p1 == 2) then 
			-- 设置电机反转
			do_udp_cmd(0x20,0,do_lshift(1,8),do_lshift(1,8),0);
			-- 设置电机开始工作，p2秒后延时停止，p2为0,没有延时，谨慎使用p2==0
			do_udp_cmd(0x20,0,do_lshift(1,1),do_lshift(1,1),p2*1000);
		else
			-- 电机p2秒后延时停止工作，p2为0，则立即停止
			do_udp_cmd(0x20,0,do_lshift(0,1),do_lshift(1,1),p2*1000);
		end
	end
	return 0
end

-- 上风帘电机动作函数：
-- 		上风帘电机供电使用KC031 GPIO-4
--		上风帘电机正反转使用KC031 GPIO-2
-- 可以通过udp命令调用此函数，如：
--		FB1244010A757064616D705F726F746174696F6E0000FE
function updamp_rotation(p1,p2)
	-- 首选停止电机工作
	do_udp_cmd(0x20,0,do_lshift(0,4),do_lshift(1,4),0);
	if (p1 == 1) then
		-- 设置电机正转 
		do_udp_cmd(0x20,0,do_lshift(0,2),do_lshift(1,2),0);
		-- 电机开始工作，p2秒后延时停止，p2为0,没有延时，谨慎使用p2==0
		do_udp_cmd(0x20,0,do_lshift(1,4),do_lshift(1,4),p2*1000);
	else 
		if (p1 == 2) then 
			-- 设置电机反转
			do_udp_cmd(0x20,0,do_lshift(1,2),do_lshift(1,2),0);
			-- 设置电机开始工作，p2秒后延时停止，p2为0,没有延时，谨慎使用p2==0
			do_udp_cmd(0x20,0,do_lshift(1,4),do_lshift(1,4),p2*1000);
		else
			-- 电机p2秒后延时停止工作，p2为0，则立即停止
			do_udp_cmd(0x20,0,do_lshift(0,4),do_lshift(1,4),p2*1000);
		end
	end
	return 0
end

-- 下风帘电机动作函数：
-- 		下风帘电机供电使用KC031 GPIO-5
--		下风帘电机正反转使用KC031 GPIO-3
-- 可以通过udp命令调用此函数，如：
--		FB1444010A646F776E64616D705F726F746174696F6E0000FE
function downdamp_rotation(p1,p2)
	-- 首选停止电机工作
	do_udp_cmd(0x20,0,do_lshift(0,5),do_lshift(1,5),0);
	if (p1 == 1) then
		-- 设置电机正转 
		do_udp_cmd(0x20,0,do_lshift(0,3),do_lshift(1,3),0);
		-- 电机开始工作，p2秒后延时停止，p2为0,没有延时，谨慎使用p2==0
		do_udp_cmd(0x20,0,do_lshift(1,5),do_lshift(1,5),p2*1000);
	else 
		if (p1 == 2) then 
			-- 设置电机反转
			do_udp_cmd(0x20,0,do_lshift(1,3),do_lshift(1,3),0);
			-- 设置电机开始工作，p2秒后延时停止，p2为0,没有延时，谨慎使用p2==0
			do_udp_cmd(0x20,0,do_lshift(1,5),do_lshift(1,5),p2*1000);
		else
			-- 电机p2秒后延时停止工作，p2为0，则立即停止
			do_udp_cmd(0x20,0,do_lshift(0,5),do_lshift(1,5),p2*1000);
		end
	end
	return 0
end